package cn.silver.module.message.service.impl;

import cn.silver.framework.mybatis.service.impl.BusServiceImpl;
import cn.silver.module.message.bean.TemplateBean;
import cn.silver.module.message.domain.MsgTemplate;
import cn.silver.module.message.mapper.MsgTemplateMapper;
import cn.silver.module.message.param.TemplateParam;
import cn.silver.module.message.service.IMsgTemplateService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

/**
 * 短消息模板Service业务层处理
 *
 * @author hb
 * @date 2022-06-20
 */
@Service
@RequiredArgsConstructor
public class MsgTemplateServiceImpl extends BusServiceImpl<MsgTemplateMapper, MsgTemplate, TemplateParam, TemplateBean>
		implements IMsgTemplateService {
	
//	private final SerialService serialService;
//	private final ISysMsgTemplateParamService variableService;
//	private final ISysMsgTemplateContentService contentService;
//
//	@Override
//	public ResultPage<SysMsgTemplate> selectPage(PageDomain domain, SysMsgTemplate entity) {
//		QueryWrapper<SysMsgTemplate> queryWrapper = this.buildQueryWrapper(entity);
//		Page<SysMsgTemplate> page = baseMapper.selectPage(this.build(domain), queryWrapper);
//		if (page.getTotal() > 0) {
//			page.getRecords().stream().forEach(item -> {
//				item.setChannels(Arrays.asList(item.getChannel().split(",")));
//			});
//		}
//		return new ResultPage<>(page.getRecords(), page.getTotal());
//	}
//
//	@Override
//	public SysMsgTemplate selectById(String id) {
//		SysMsgTemplate entity = this.baseMapper.selectById(id);
//		if (StringUtils.isNotBlank(entity.getChannel())) {
//			entity.setChannels(Arrays.asList(entity.getChannel().split(",")));
//		}
//		List<SysMsgTemplateContent> contents = this.contentService.selectList(new QueryWrapper<SysMsgTemplateContent>().eq("template_id", id));
//		JSONObject message = new JSONObject();
//		if (CollectionUtils.isNotEmpty(contents)) {
//			contents.stream().forEach(item -> message.set(item.getChannel(), item.getContent()));
//		} else {
//			entity.getChannels().stream().forEach(item -> message.set(item, entity.getContent()));
//		}
//		entity.setMessages(message);
//		return entity;
//	}
//
//	@Override
//	public MsgTemplateModel selectTemplateByType(String template) {
//		List<SysMsgTemplate> templates = this.baseMapper.selectList(new QueryWrapper<SysMsgTemplate>().eq("type", template).eq("status", TemplateStatus.NORMAL.getCode()));
//		return CollectionUtils.isEmpty(templates) ? null : templates.get(0).convertModel();
//	}
//
//	@Override
//	@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
//	public int insert(SysMsgTemplate entity) {
//		if (StringUtils.isBlank(entity.getCode())) {
//			entity.setCode(serialService.getSerialNumber(BussSerialConstant.MESSAGE.getCode()));
//		}
//		this.baseMapper.update(new UpdateWrapper<SysMsgTemplate>().set("status", TemplateStatus.CLOSE.getCode())
//				.eq("type", entity.getType()).eq("status", TemplateStatus.NORMAL));
//		entity.preInsert();
//		if (CollectionUtils.isNotEmpty(entity.getChannels())) {
//			entity.setChannel(entity.getChannels().stream().collect(Collectors.joining(",")));
//		}
//		if (MapUtils.isNotEmpty(entity.getMessages())) {
//			this.contentService.saveMessage(entity.getId(), entity.getMessages());
//		}
//		this.variableService.saveParams(entity);
//		return this.baseMapper.insert(entity);
//	}
//
//	@Override
//	@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
//	public int update(SysMsgTemplate entity) {
//		if (StringUtils.isBlank(entity.getCode())) {
//			entity.setCode(serialService.getSerialNumber(BussSerialConstant.MESSAGE.getCode()));
//		}
//		if (TemplateStatus.NORMAL.getCode().equalsIgnoreCase(entity.getStatus())) {
//			this.baseMapper.update(new UpdateWrapper<SysMsgTemplate>().set("status", TemplateStatus.CLOSE.getCode())
//					.eq("type", entity.getType()).eq("status", TemplateStatus.NORMAL).ne("id", entity.getId()));
//		}
//		if (CollectionUtils.isNotEmpty(entity.getChannels())) {
//			entity.setChannel(entity.getChannels().stream().collect(Collectors.joining(",")));
//		}
//		if (MapUtils.isNotEmpty(entity.getMessages())) {
//			this.contentService.saveMessage(entity.getId(), entity.getMessages());
//		}
//		this.variableService.saveParams(entity);
//		entity.preUpdate();
//		if (CollectionUtils.isNotEmpty(entity.getVariables())) {
//			this.variableService.insertOrUpdateBatch(entity.getVariables());
//		}
//		return this.baseMapper.update(entity);
//	}
}
